#ifndef MUSIC_H
#define MUSIC_H
#include<QUrl>

/////////////////////////////////////////////////////////
//描述歌曲音乐,用方便组织管理一个音乐文件//////////////////////
////////////////////////////////////////////////////////

class Music
{
public:
    Music();
    //通过音乐文件的URL路径创建Music对象
    Music(QUrl url);
    //提供设置音乐文件的成员变量的函数
    void setMusicId(const QString& musicId);
    void setMusicName(const QString& musicName);
    void setMusicSinger(const QString& musicSinger);
    void setMusicAlbum(const QString& musicAlbum);
    void setDuration(qint64 durable);
    void setMusicUrl(const QString& musicUrl);
    void setIsLike(bool isLike);
    void setIsHistory(bool isHestory);

    //提供获取音乐文件的成员变量的函数
    QString getMusicName()const;
    QString getMusicSinger()const;
    QString getMusicAlbum()const;
    qint64 getDuration()const;
    bool getIsLike()const;
    bool getIsHistory()const;
    QUrl getMusicUrl()const;
    QString getMusicId()const;

    //获取当前歌曲对应歌词文件的路径函数
    QString getLrcFilePath()const;
    //把歌曲信息写入到数据库中
    void writeMusicToDB();

private:
    //解析媒体的元数据并设置
    void parseMediaMetaDate();

private:
    QString musicName;          //歌曲名称
    QString musicSinger;        //歌曲作者
    QString musicAlbum;         //歌曲专辑
    qint64 duration;            //持续时长-long long类型(以毫秒为单位保存)
    QUrl musicUrl;              //音乐的URL路径
    bool isLike;                //标记该音乐是否为我喜欢
    bool isHistory;             //标记该音乐是否历史播放过
    QString musicId;            //设置歌曲,用于确保在音乐列表中歌曲的唯一性(防止删除音乐或修改位置后,找不到文件,或者重复添加音乐)
};

#endif // MUSIC_H
